package a.a004;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;

import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test1 {
	
	
	public static void main(String[] args) throws IOException {

		File file = new File("src/main/java/a/a004/test1.xlsx");
		System.out.println(file.getAbsolutePath());
		
		/** ===================================================== */
		FileInputStream fis = new FileInputStream(file);
		XSSFWorkbook xwb = new XSSFWorkbook(fis);
		XSSFSheet sheet = xwb.getSheetAt(1);
		
		//读 "合并单元格" 中的 cell
		System.out.println("=> " + sheet.getRow(0).getCell(0));
		System.out.println("=> " + sheet.getRow(1).getCell(1));
		System.out.println("=> " + sheet.getRow(3).getCell(2));
		
		//写 "合并单元格" 中的 cell
//		sheet.getRow(3).getCell(2).setCellValue(123);
//		sheet.getRow(1).getCell(1).setCellValue(456);
//		sheet.getRow(0).getCell(0).setCellValue(789);
		sheet.getRow(3).getSheet();
		
//		sheet.a
//		cell.getAddress().
		
		System.out.println(sheet.getNumMergedRegions());
		
		long startT = new Date().getTime();
		System.out.println("=> " + startT);
		 // 遍历合并区域
	    for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
	        CellRangeAddress region = sheet.getMergedRegion(i); // 
	        
//	        region.
//	        sheet.
	        
	        int colIndex = region.getFirstColumn();             // 合并区域首列位置
	        int rowNum = region.getFirstRow();                     // 合并区域首行位置
	        System.out.println("第[" + i + "]个合并区域：" +  sheet.getRow(rowNum).getCell(colIndex));
	    }
	    long endT = new Date().getTime();
	    System.out.println("=> " + endT);
	    System.out.println("耗时 => " + (endT - startT));
	    
	   
// 这个顺序，是 按合并单元格 创建的 顺序 来 排的
//	    第[0]个合并区域：789.0
//	    第[1]个合并区域：qqq
//	    第[2]个合并区域：bbb
//	    第[3]个合并区域：www
//	    第[4]个合并区域：ccc
//	    第[5]个合并区域：ddd
	    
//		CellRangeAddress region = sheet.getMergedRegion(4);
//		region.
		
		/** ===================================================== */
//		FileOutputStream fo = new FileOutputStream(file);
//		xwb.write(fo);
//		fo.close();
		
		/**
		 * 结论，如果使用 poi 赋值，那么 很有很能会 在 "合并单元格" 中藏值
		 * 但是 手动在 xlsx 上进行 "合并单元格" ，就不会有 藏值的 情况存在
		 */
	}

}
